<?php
/**
 * @copyright (c) 2011
 */
App::uses('AppModel', 'Model');
class StaffUser extends AppModel {
	var $name = 'StaffUser';

    public function save($data = null,$validate = true, $fieldList = array()) {
        $s = $this->sanitize($data);
        return parent::save($s);
    }

    function login($username=null, $password=null){
        $password = md5($password);
        $result = $this->find('first',array(
            'conditions'=>array('username'=>$username, 'password'=>$password),
            'recursive'=>-1
        ));
        if($result){
            $active = $result['StaffUser']['active'];
            if( $active == 'n' ) { /** User is disable, Logout */
                return array('status'=>false, 'msg'=>'Account is disabled');
            }
            else{
                return array('status'=>true, 'msg'=>'Account Verified', 'data'=>$result);
            }
        }
        else{
            return array('status'=>false, 'msg'=>'Invalid login credentials');
        }
    }

    /**
     * This function retrieves all the users from the database tables users.
     * @name getAllUsers
     * @param void
     * @return mixed. Array containing the data retrieved.
     * @access public
     */
    function getAllUsers(){
    	# fetch the data and return it.
    	return $this->find('all', array('conditions' => array('deleted' => 'n'), 'recursive' => -1));
    }

    /**
     * This function retrieves the user data based upon his/her id
     * @name getUserById
     * @param string $userId string holding the user id.his parameter is defaulted to null.
     * When it is null it means that cake is going to use the ActiveRecord system to retrieve the data.
     * @return mixed. Array containing the user data.
     * @access public
     */
    function getUserById($userId = null){
        $conditions = array(
           'StaffUser.id' => $userId,
           'StaffUser.deleted' => 'n'
        );
        # fetch the specific data from the server and retrun it.
        return  $this->find('first', array('conditions' => $conditions, 'recursive' => 1));
    }
    
    
          # User Data manipulation functions
      /**
       * This function retrieves the user by his login name
       * @name getUserByLoginName
       * @param string $loginName
       * @return array of data containing the login name and the user password
       * @access public
       */
      function getUserByLoginName($loginName = null){
              # search condition
             $conditions = array(
                 'StaffUser.username' => $loginName,
                 'StaffUser.deleted' => 'n'
             );
             # fetch the specific data from the server and retrun it.
            return  $this->find('first', array('conditions' => $conditions, 'recursive' => 1));
      }

}